package com.example.service.impl;

import com.example.dao.ActivityReviewDao;
import com.example.entity.ActivityReview;
import com.example.service.ActivityReviewService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;

/**
 * 活动审核服务实现类
 * 实现活动审核相关的业务逻辑操作
 * 使用@Transactional注解确保方法的事务性
 */
@Service
@Transactional
public class ActivityReviewServiceImpl implements ActivityReviewService {

    @Autowired
    private ActivityReviewDao activityReviewDao; // 注入活动审核数据访问对象

    /**
     * 更新审核信息
     * @param review 待更新的审核对象
     * @return 更新成功返回true，失败返回false
     */
    @Override
    public boolean updateReview(ActivityReview review) {
        try {
            // 调用DAO层更新方法，返回受影响行数
            return activityReviewDao.update(review) > 0;
        } catch (Exception e) {
            // 异常处理，打印堆栈信息
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 删除审核记录
     * @param reviewId 待删除的审核ID
     * @return 删除成功返回true，失败返回false
     */
    @Override
    public boolean deleteReview(Integer reviewId) {
        try {
            // 调用DAO层删除方法，返回受影响行数
            return activityReviewDao.delete(reviewId) > 0;
        } catch (Exception e) {
            // 异常处理，打印堆栈信息
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 根据活动ID获取审核记录列表
     * @param activityId 活动ID
     * @return 审核记录列表，查询失败返回null
     */
    @Override
    public List<ActivityReview> getReviewsByActivity(Integer activityId) {
        try {
            // 调用DAO层按活动ID查询方法
            return activityReviewDao.findByActivityId(activityId);
        } catch (Exception e) {
            // 异常处理，打印堆栈信息
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 获取所有审核记录
     * @return 全部审核记录列表，查询失败返回null
     */
    @Override
    public List<ActivityReview> getAllReviews() {
        try {
            // 调用DAO层查询所有方法
            return activityReviewDao.findAll();
        } catch (Exception e) {
            // 异常处理，打印堆栈信息
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 根据ID获取单个审核记录
     * @param reviewId 审核记录ID
     * @return 匹配的审核记录对象，未找到返回null
     */
    @Override
    public ActivityReview getReviewById(Integer reviewId) {
        try {
            // 从所有记录中筛选匹配ID的记录
            return activityReviewDao.findAll().stream()
                    .filter(r -> r.getReviewId().equals(reviewId))
                    .findFirst()
                    .orElse(null);
        } catch (Exception e) {
            // 异常处理，打印堆栈信息
            e.printStackTrace();
            return null;
        }
    }
}